As is known, microcontroller integrated circuits or chips are custom made to the requirements of their end users.
Thus, problem arises that the assembling of an individual chip must be optimized, to provide an end product which comes nearest to meeting an individual user's requirements, and to avoid unnecessary redundant subsystems.
The individual chip is, for the purpose, obtained from families of modular systems which can be generally likened to libraries of components including sets of macro-cells performing certain basic functions. The assembling of a predetermined appropriate number of macro-cells from the same family allows a single on-chip system to be obtained.
Thus, an end user will be able to develop some specific application, both hardware- and software-wise, using that chip. Unfortunately, the time for delivery of a chip product to its end user may be quite long (usually 3 to 6 months).
Accordingly, a need for emulating the chip, particularly an operation of the microcontroller therein, does exist so that the end user can start developing his own application and carry on the development work concurrently with the physical construction of the integrated circuit.
Thus, it is a matter of providing a so-called emulation or `bondout` chip, that is a structure most closely resembling the system which is to be integrated on the chip product for ultimate delivery to the user.
The emulation chip will, therefore, be an integrated circuit which contains a core, all peripherals, and all gates available for a family of microcontroller macro-cells.
Each peripheral can be activated or deactivated to make the microcontroller configuration on the emulation chip similar to that of the microcontroller of the chip product, as by selecting some of the gates and the peripherals from the available ones. In addition, some gates may be used for different purposes to confer maximum flexibility on the emulation chip configuration.
The positioning of the external access pins of the emulation chip is, however, subject to physical as well as logical constraints. Such pins, in fact, must be connectable to structures provided on the chip product to suit the end user's requirements, and be programmable in predetermined sequences.
Also, some of these pins are expected to match on the chip product.
Thus, it is a matter of providing an emulation chip with physical and logical connections, specifically between functional modules and interfacing gates, of a programmable type.
Accordingly, the emulation chip is to include programmable devices adapted for establishing all possible connections between components present on the chip.
A prior approach to filling this demand has been one of storing the connections of the emulation chip into digital logic of the software type, using external registers of the chip, or alternatively, using hardware program contacts to be formed by means of fuses or additional masking of the semiconductor structure of the emulation chip.
Circuits are currently available, such as FPGA and PLD circuits, which operate in this manner by storing a whole netlist of the microcontroller to be emulated. However, these have a drawback in that they operate at speeds below the potential for speed of an emulated circuit.
It is also possible to store connections between input and output terminals by means of a multiplexer. This approach can only be used, however, for a small number, practically a few tens, of the connections to be made.